package leetcode; /**
 * description:
 * author:zt
 * date:2021-08-06
 */

import java.util.ArrayList;
import java.util.Arrays;

/**
 * 以数组 intervals 表示若干个区间的集合，其中单个区间为 intervals[i] = [starti, endi] 。
 * 请你合并所有重叠的区间，并返回一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间。
 */
public class leetcode56 {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals,(a,b)->{
            return a[0]-b[0];
        });
        ArrayList<int[]> res = new ArrayList<>();
        int len = intervals.length;
        int i = 0;
        while (i<len){
            int left = intervals[i][0], right = intervals[i][1];
            while (i<len-1 && intervals[i+1][0]<=right){
                right = Math.max(right,intervals[i++][0]);
            }
            res.add(new int[]{left,right});
            i++;
        }
        int[][] ans = new int[res.size()][2];
        for (int k = 0; k < res.size(); k++) {
            ans[i] = res.get(i);
        }
        return ans;
    }
}
